home *** CD-ROM | disk | FTP | other *** search
/ Your Web Site Creator / Your Web Site Creator.iso / WebSite / data1.cab / Program_Executable_Files / Classes / STCANVA2.CLA (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-13  |  4.4 KB  |  185 lines

  1. import java.applet.Applet;
  2. import java.awt.Canvas;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.awt.image.ImageObserver;
  11. import java.io.IOException;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14.  
  15. public class ScrollTextCanvas2 extends Canvas implements Runnable {
  16.    Thread theThread;
  17.    String textData;
  18.    String[] textLines;
  19.    Image osImage;
  20.    Graphics osg;
  21.    String urlPath;
  22.    Color bkColor;
  23.    Image bkImage;
  24.    int speed;
  25.    int currentY;
  26.    int textHeight;
  27.    int lineCount;
  28.    int increment;
  29.    URL theURL;
  30.    Font textFont;
  31.  
  32.    public void update(Graphics var1) {
  33.       if (this.osImage == null) {
  34.          this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
  35.          this.osg = this.osImage.getGraphics();
  36.       }
  37.  
  38.       this.osg.setColor(((Component)this).getBackground());
  39.       this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  40.       if (this.bkImage != null) {
  41.          int var2 = this.bkImage.getWidth(this);
  42.          int var3 = this.bkImage.getHeight(this);
  43.          int var4 = ((Component)this).size().width / var2;
  44.          int var5 = ((Component)this).size().height / var3;
  45.          ++var4;
  46.          ++var5;
  47.  
  48.          for(int var6 = 0; var6 < var5; ++var6) {
  49.             for(int var7 = 0; var7 < var4; ++var7) {
  50.                this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
  51.             }
  52.          }
  53.       }
  54.  
  55.       this.osg.setColor(Color.black);
  56.       if (this.textLines != null && this.textLines.length > 0) {
  57.          FontMetrics var8 = ((Component)this).getFontMetrics(((Component)this).getFont());
  58.          if (var8 != null) {
  59.             this.textHeight = var8.getHeight();
  60.  
  61.             for(int var9 = 0; var9 < this.textLines.length; ++var9) {
  62.                this.osg.drawString(this.textLines[var9], 0, this.currentY + (var9 + 1) * this.textHeight);
  63.             }
  64.          }
  65.       }
  66.  
  67.       var1.drawImage(this.osImage, 0, 0, (ImageObserver)null);
  68.    }
  69.  
  70.    public ScrollTextCanvas2(Applet var1, int var2) {
  71.       this.GetParameters(var1, var2);
  72.       if (this.urlPath.length() > 0) {
  73.          try {
  74.             this.theURL = new URL(this.urlPath);
  75.             Object var3 = this.theURL.getContent();
  76.             this.textData = var3.toString();
  77.             this.BuildLinesOfText();
  78.          } catch (MalformedURLException var4) {
  79.             System.out.println(((Throwable)var4).getMessage());
  80.          } catch (IOException var5) {
  81.             System.out.println(((Throwable)var5).getMessage());
  82.          }
  83.       }
  84.    }
  85.  
  86.    void GetParameters(Applet var1, int var2) {
  87.       String var3 = var1.getParameter("scrollTextBkColor" + var2);
  88.       this.bkColor = AppletParam2.GetColor(var3, (Color)null);
  89.       if (this.bkColor != null) {
  90.          ((Component)this).setBackground(this.bkColor);
  91.       }
  92.  
  93.       var3 = var1.getParameter("scrollTextBkImage" + var2);
  94.       this.bkImage = var1.getImage(var1.getCodeBase(), var3);
  95.       var3 = var1.getParameter("scrollTextFile" + var2);
  96.       this.urlPath = AppletParam2.GetString(var3, "");
  97.       var3 = var1.getParameter("scrollTextSpeed" + var2);
  98.       this.speed = AppletParam2.GetInt(var3, 250);
  99.       var3 = var1.getParameter("scrollTextIncrement" + var2);
  100.       this.increment = AppletParam2.GetInt(var3, 2);
  101.       var3 = var1.getParameter("scrollTextFont" + var2);
  102.       this.textFont = AppletParam2.GetJavaFont(var3);
  103.       ((Component)this).setFont(this.textFont);
  104.    }
  105.  
  106.    void BuildLinesOfText() {
  107.       int var1 = this.textData.length();
  108.       this.lineCount = 0;
  109.  
  110.       for(int var2 = 0; var2 < var1; ++var2) {
  111.          char var3 = this.textData.charAt(var2);
  112.          if (var3 != '\r' && var3 == '\n') {
  113.             ++this.lineCount;
  114.          }
  115.       }
  116.  
  117.       if (this.textData.charAt(var1 - 1) != '\r' && this.textData.charAt(var1 - 1) != '\n') {
  118.          ++this.lineCount;
  119.       }
  120.  
  121.       if (this.lineCount != 0) {
  122.          this.textLines = new String[this.lineCount];
  123.          int var8 = 0;
  124.          int var4 = 0;
  125.          int var5 = 0;
  126.  
  127.          for(String var6 = ""; var5 < var1; ++var5) {
  128.             char var7 = this.textData.charAt(var5);
  129.             if (var7 != '\r') {
  130.                if (var7 != '\n') {
  131.                   var6 = this.textData.substring(var4, var5 + 1);
  132.                } else {
  133.                   this.textLines[var8] = var6;
  134.                   var4 = var5 + 1;
  135.                   var5 = var4;
  136.                   ++var8;
  137.                }
  138.             }
  139.          }
  140.  
  141.       }
  142.    }
  143.  
  144.    public synchronized void reshape(int var1, int var2, int var3, int var4) {
  145.       this.osImage = null;
  146.       this.osg = null;
  147.       this.currentY = var4;
  148.       super.reshape(var1, var2, var3, var4);
  149.    }
  150.  
  151.    public Dimension minimumSize() {
  152.       return new Dimension(10, 10);
  153.    }
  154.  
  155.    public Dimension preferredSize() {
  156.       return new Dimension(10, 10);
  157.    }
  158.  
  159.    public void Start() {
  160.       this.theThread = new Thread(this);
  161.       this.theThread.start();
  162.    }
  163.  
  164.    public void Stop() {
  165.       this.theThread.stop();
  166.       this.theThread = null;
  167.    }
  168.  
  169.    public void run() {
  170.       try {
  171.          while(true) {
  172.             ((Component)this).repaint();
  173.             this.currentY -= this.increment;
  174.             if (this.currentY < -(this.textHeight * this.lineCount)) {
  175.                this.currentY = ((Component)this).size().height;
  176.             }
  177.  
  178.             Thread.sleep((long)this.speed);
  179.          }
  180.       } catch (InterruptedException var2) {
  181.          System.out.println(((Throwable)var2).getMessage());
  182.       }
  183.    }
  184. }
  185.